Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Compiler-Anweisung</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Compiler-Anweisung"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Compiler-Anweisung rootpage-Compiler-Anweisung skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Compiler-Anweisung</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>Eine <b>Compiler-Anweisung</b> (<span style="font-style:normal;font-weight:normal"><a href="Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">compiler directive</span> oder <i>pragma</i>) ist eine in den <a href="Quelltext" title="Quelltext">Quelltext</a> eingefügte Steueranweisung für den <a href="Compiler" title="Compiler">Compiler</a>. Der Umfang und die <a href="Syntax" title="Syntax">Syntax</a> von Compiler-Anweisungen sind von der <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a> und teilweise auch vom gewählten Compiler abhängig.
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<p>In der Programmiersprache <a href="Algol_68" title="Algol 68">Algol&nbsp;68</a> werden Compiler-Direktiven zwischen <code><b>pr</b></code> und <code><b>pr</b></code> oder zwischen <code><b>pragmat</b></code> und <code><b>pragmat</b></code> eingeschlossen.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Dies ist der Ursprung des Begriffs <i>Pragmat</i>.
</p><p><a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>-Compiler verwenden einen <a href="C-Pr%C3%A4prozessor" title="C-Präprozessor">C-Präprozessor</a>, der Compiler-Direktiven interpretiert.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Beispielsweise weist <code style="white-space: nowrap" class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;foo.h&gt;</span></code> den Präprozessor an, den Inhalt der Datei <i>foo.h</i> an dieser Stelle im Quelltext einzufügen.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Mit der Anweisung <code style="white-space: nowrap" class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><span class="cp">#pragma eigenschaft</span></code> wird eine Eigenschaft dem Compiler angezeigt. Ein Beispiel für eine Eigenschaft ist die Annotation eines parallelisierbaren Code-Blocks, falls der C-Compiler den <a href="OpenMP" title="OpenMP">OpenMP</a>-Standard unterstützt:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#pragma omp parallel for reduction(+:c)</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">length</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span>
<span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">*</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</pre></div>
<p>In der Programmiersprache <a href="Pascal_(Programmiersprache)" title="Pascal (Programmiersprache)">Pascal</a> werden Compiler-Direktiven als spezielle Kommentare definiert. Kommentare, deren erstes Zeichen ein <code>$</code> ist, werden als Direktive interpretiert. Beispielsweise schaltet <code>{$Q+}</code> die <a href="Codegenerator" title="Codegenerator">Codegenerierung</a> von Indexüberprüfungen von Arrayzugriffen ein.
</p><p>In der Programmiersprache <a href="Ada_(Programmiersprache)" title="Ada (Programmiersprache)">Ada</a> werden Compiler-Direktiven durch das <a href="Schl%C3%BCsselwort_(Programmierung)" title="Schlüsselwort (Programmierung)">Schlüsselwort</a> <code>pragma</code> eingeleitet. So wird z.&nbsp;B. mit <code><b>pragma</b> OPTIMIZE(TIME);</code> die <a href="Programmoptimierung" class="mw-redirect" title="Programmoptimierung">Programmoptimierung</a> gesteuert.
</p><p>Der <a href="Haskell_(Programmiersprache)" title="Haskell (Programmiersprache)">Haskell</a>-Compiler <a href="Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">GHC</a> unterstützt das Setzen von Kommandozeilen-Optionen auch in der Quelltextdatei über Compiler-Direktiven. Ein Beispiel ist die Aktivierung von ghc-Haskell-Spracherweiterungen, die mit der Direktive <code style="white-space: nowrap">{-# OPTIONS_GHC -fglasgow-exts #-}</code> angefordert wird.
</p><p>In der <a href="SAP" title="SAP">SAP</a>-Programmiersprache <a href="ABAP" title="ABAP">ABAP</a> werden Pragmas verwendet, um Warnungen verschiedener Prüfwerkzeuge auszublenden.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Der Programmierer erklärt damit, dass er die betreffende Syntax bewusst verwendet und den konkreten Einsatz auf Unbedenklichkeit geprüft hat. So können etwa performance-kritische Anweisungen hingenommen werden, wenn im konkreten Einsatzzweck keine langen Laufzeiten zu erwarten sind oder aber bewusst toleriert werden können.
</p>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */


.mw-parser-output .webarchiv-memento a{color:inherit}


/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20071017051614/http://burks.brighton.ac.uk/burks/language/other/a68rr/rr9.htm#92"><i>Revised Report on the Algorithmic Language ALGOL 68</i>.</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> vom 17. Oktober 2007 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>)</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://gcc.gnu.org/onlinedocs/cpp/Pragmas.html"><i>Pragmas (The C Preprocessor).</i></a><span class="Abrufdatum"> Abgerufen am 26.&nbsp;Februar 2025</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ACompiler-Anweisung&amp;rft.title=Pragmas+%28The+C+Preprocessor%29&amp;rft.description=Pragmas+%28The+C+Preprocessor%29&amp;rft.identifier=https%3A%2F%2Fgcc.gnu.org%2Fonlinedocs%2Fcpp%2FPragmas.html">&nbsp;</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">Jörg Wiegelmann: <cite style="font-style:italic">Softwareentwicklung in C für Mikroprozessoren und Mikrocontroller: C-Programmierung für Embedded-Systeme</cite>. 7., neu bearbeitete und erweiterte Auflage. VDE Verlag GmbH, Berlin Offenbach 2017, ISBN 978-3-8007-4328-5, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>19&nbsp;Abs.&nbsp;3.2.7&nbsp;Präprozessor</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Compiler-Anweisung&amp;rft.au=J%C3%B6rg+Wiegelmann&amp;rft.btitle=Softwareentwicklung+in+C+f%C3%BCr+Mikroprozessoren+und+Mikrocontroller%3A+C-Programmierung+f%C3%BCr+Embedded-Systeme&amp;rft.date=2017&amp;rft.edition=7.%2C+neu+bearbeitete+und+erweiterte+Auflage&amp;rft.genre=book&amp;rft.isbn=9783800743285&amp;rft.pages=19+Abs.+3.2.7+Pr%C3%A4prozessor&amp;rft.place=Berlin+Offenbach&amp;rft.pub=VDE+Verlag+GmbH" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://help.sap.com/doc/abapdocu_751_index_htm/7.51/de-DE/abenpragma.htm"><i>Pragmas - ABAP-Schlüsselwortdokumentation.</i></a><span class="Abrufdatum"> Abgerufen am 8.&nbsp;Mai 2025</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ACompiler-Anweisung&amp;rft.title=Pragmas+-+ABAP-Schl%C3%BCsselwortdokumentation&amp;rft.description=Pragmas+-+ABAP-Schl%C3%BCsselwortdokumentation&amp;rft.identifier=https%3A%2F%2Fhelp.sap.com%2Fdoc%2Fabapdocu_751_index_htm%2F7.51%2Fde-DE%2Fabenpragma.htm">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-05-08" href="https://de.wikipedia.org/wiki/?title=Compiler-Anweisung&amp;oldid=255832736">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>